JVM এর প্রধান Memory Area সমূহ: Heap, Stack, Method Area, PC Register, Native Method Stack

Java Technologies - জাভা ভার্চুয়াল মেশিন (Java Virtual Machine) - JVM এর Memory Management
274

Java Virtual Machine (JVM) হল একটি সফটওয়্যার ইঞ্জিন যা Java প্রোগ্রামগুলি রান করার জন্য ব্যবহৃত হয়। এটি একটি জটিল ব্যবস্থা এবং এর মধ্যে বিভিন্ন Memory Area রয়েছে যেখানে বিভিন্ন ধরনের ডেটা এবং কন্টেন্ট সংরক্ষিত হয়। JVM এর প্রধান মেমরি এলাকাগুলির মধ্যে রয়েছে Heap, Stack, Method Area, PC Register, এবং Native Method Stack। নিচে এই মেমরি এলাকার বিস্তারিত আলোচনা করা হলো।

JVM এর প্রধান Memory Area সমূহ:

  1. Heap:

    • Heap হল JVM এর মেমরি এলাকা যেখানে সব object এবং array তৈরি হয়। এটি গার্বেজ সংগ্রাহক (Garbage Collector) দ্বারা ম্যানেজ করা হয়, যা নিশ্চিত করে যে অব্যবহৃত বা অপ্রয়োজনীয় অবজেক্টগুলি মুছে ফেলা হয় এবং মেমরি মুক্ত হয়।
    • Heap দুইটি ভাগে বিভক্ত:
      • Young Generation: যেখানে নতুন অবজেক্টগুলি তৈরি হয়।
      • Old Generation (Tenured Generation): যেখানে পুরোনো এবং দীর্ঘমেয়াদী অবজেক্টগুলি সংরক্ষিত হয়।

    Heap এর কাজ:

    • যখন নতুন অবজেক্ট তৈরি করা হয়, তখন তা Young Generation-এ সংরক্ষিত হয়। যখন এটি একটি নির্দিষ্ট সময়ের জন্য জীবিত থাকে, তখন তা Old Generation-এ স্থানান্তরিত হয়।
    • Garbage Collection যখন অনুরোধ করা হয়, তখন Young Generation-এর অবজেক্টগুলি পরিষ্কার করা হয়।
  2. Stack:

    • Stack হল একটি ফিক্সড সাইজের মেমরি এলাকা, যা Method Call Stack নামে পরিচিত। এখানে প্রতিটি মেথড কলের local variables, method calls, এবং return addresses সংরক্ষিত হয়।
    • প্রতিটি থ্রেডের জন্য একটি আলাদা স্ট্যাক তৈরি হয়, যা থ্রেডের কাজের জন্য প্রয়োজনীয় স্থান সরবরাহ করে।
    • যখন একটি মেথড কল হয়, তখন তার stack frame তৈরি হয়, এবং মেথডটি সম্পন্ন হলে এটি মুছে ফেলা হয়।

    Stack এর কাজ:

    • Local Variables: মেথডের ভিতরে ব্যবহৃত পরিবর্তনশীলগুলি এখানে রাখা হয়।
    • Method Invocation: একটি মেথড কল করার সময় সেই মেথডের তথ্য স্ট্যাকে সংরক্ষিত হয়।
  3. Method Area:

    • Method Area হল JVM এর একটি মেমরি এলাকা যা সমস্ত class-level information সংরক্ষণ করে, যেমন:
      • Class Definitions (ক্লাসের স্ট্রাকচার এবং মেটাডেটা)
      • Static variables (যেগুলি ক্লাসের সাথে যুক্ত থাকে, অবজেক্টের সাথে নয়)
      • Method definitions (ক্লাসের মেথড এবং ফাংশন)
      • Constant pool (কনস্ট্যান্ট ডেটা যেমন স্ট্রিং লিটারেল, ক্লাস রেফারেন্স)

    Method Area এর কাজ:

    • যখন একটি ক্লাস লোড হয়, তখন তার মেটাডেটা এবং মেথড ডিফিনিশন এই অঞ্চলে লোড হয়।
    • এটি Runtime Constant Pool ধারণ করে, যা JVM চলাকালীন সময় ক্লাসের কনস্ট্যান্টগুলি সংরক্ষণ করে।
  4. Program Counter (PC) Register:

    • PC Register হল প্রতিটি থ্রেডের জন্য আলাদা একটি রেজিস্টার, যা Instruction Address রাখে। এটি বর্তমান থ্রেডের next instruction ট্র্যাক করে, অর্থাৎ JVM কোন নির্দেশনা এক্সিকিউট করছে তা ধারণ করে।
    • এটি সাধারণত থ্রেডের current executing instruction নির্দেশ করে এবং থ্রেডের execution flow কে ম্যানেজ করে।

    PC Register এর কাজ:

    • যখন কোনো থ্রেড একটি মেথড এক্সিকিউট করে, তখন সেই মেথডের বর্তমান স্টেট এবং পরবর্তী ইন্সট্রাকশন PC Register-এ রাখা হয়।
    • যদি থ্রেড native code এক্সিকিউট করে, তবে PC Register সে সম্পর্কিত native method এর অবস্থান ধারণ করে।
  5. Native Method Stack:

    • Native Method Stack হল সেই মেমরি এলাকা যেখানে Native Methods (যেমন C বা C++ দ্বারা লেখা মেথড) সংরক্ষণ করা হয়। Java কোডে যখন native মেথড কল করা হয়, তখন সেই মেথডের execution এই স্ট্যাকে সংরক্ষিত হয়।
    • Native Methods সাধারণত JVM এর বাইরে, নেটিভ কোডের মাধ্যমে কাজ করে।

    Native Method Stack এর কাজ:

    • এটি native কোডের জন্য মেমরি প্রদান করে, যেখানে Java কোড থেকে native method কল করা হয় এবং সেই মেথড এক্সিকিউট করা হয়।

JVM এর Memory Areas: একসাথে সংক্ষিপ্ত ব্যাখ্যা

Memory Areaবর্ণনা
Heapযেখানে সব অবজেক্ট এবং অ্যারে তৈরি হয়, গার্বেজ সংগ্রাহক দ্বারা ম্যানেজ করা হয়।
Stackপ্রতিটি থ্রেডের জন্য আলাদা স্ট্যাক থাকে যেখানে মেথডের লোকাল ভেরিয়েবল এবং কল তথ্য থাকে।
Method Areaযেখানে ক্লাসের মেটাডেটা, মেথড ডেফিনিশন এবং স্ট্যাটিক ভেরিয়েবলস সংরক্ষণ করা হয়।
PC Registerপ্রতিটি থ্রেডের জন্য আলাদা, যেখানে সেই থ্রেডের বর্তমান ইনস্ট্রাকশন ঠিকানা সংরক্ষিত থাকে।
Native Method Stackযেখানে নেটিভ মেথড (যেমন C/C++) এর জন্য মেমরি সংরক্ষিত থাকে।

JVM Memory Management:

  • Garbage Collection: Heap এর মেমরি ম্যানেজমেন্ট এবং অপ্রয়োজনীয় অবজেক্টগুলি মুছে ফেলা এবং মেমরি পুনরুদ্ধারের কাজটি Garbage Collector করে।
  • Stack Memory: যখন মেথড কল হয়, তখন তার জন্য নতুন স্ট্যাক ফ্রেম তৈরি হয় এবং মেথডের কাজ শেষ হলে সেই ফ্রেম মুছে ফেলা হয়।
  • Thread Isolation: প্রতিটি থ্রেডের নিজস্ব স্ট্যাক এবং PC Register থাকে, যা থ্রেডের কাজ আলাদা করে রাখে।

সারাংশ:

JVM এর মেমরি এলাকা গুলি একে অপরের সাথে কাজ করে Java প্রোগ্রামগুলির কার্যকরী এবং সঠিকভাবে কাজ করার জন্য। Heap, Stack, Method Area, PC Register, এবং Native Method Stack এই পাঁচটি এলাকা একটি Java অ্যাপ্লিকেশন চালানোর জন্য অপরিহার্য। JVM এর এই মেমরি এলাকা গুলি দক্ষভাবে ম্যানেজ করলে একটি কার্যকরী এবং দ্রুত Java অ্যাপ্লিকেশন তৈরি করা সম্ভব।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...